home *** CD-ROM | disk | FTP | other *** search
/ PC/CD Gamer UK 129 / CD Gamer Issue 129 (December 2003) (Disc 1).ISO / Addons / Vietcong Map editor / max plugins / scripts / pteroTools / _lightingRollOut.msp < prev    next >
Encoding:
Text File  |  2003-07-18  |  5.1 KB  |  114 lines

  1. rollout LightingRollOut "Lighting" rolledUp:true (
  2.     local _name
  3.     local _RollOut
  4.  
  5.     ---------------------------------------------------------------
  6.     -- init GUI
  7.     ---------------------------------------------------------------
  8.     include "$scripts\\pteroTools\\_propGroupUI.ms"
  9.     spinner        spnAmbMult    "Ambient Mult.:"        range:[0, 99, 0]    type:#float        FieldWidth:35                    align:#right
  10.     spinner        spnDirMult    "Directional Mult.:"    range:[0, 99, 0]    type:#float        FieldWidth:35                    align:#right
  11.     colorPicker clrLight    ""                                                            width:60        height:60        align:#left
  12.     spinner        spnClrR        "R:"                    range:[0, 254, 0]    type:#integer    FieldWidth:35    offset:[0,-64]    align:#right
  13.     spinner        spnClrG        "G:"                    range:[0, 254, 0]    type:#integer    FieldWidth:35                    align:#right
  14.     spinner        spnClrB        "B:"                    range:[0, 254, 0]    type:#integer    FieldWidth:35                    align:#right
  15.  
  16.      ---------------------------------------------------------------
  17.     -- Init RollOut
  18.     ---------------------------------------------------------------
  19.      fn fnKeyNames = #( _name )
  20.      fn fnKeyUI = #( #(spnAmbMult, spnDirMult, spnClrR, spnClrG, spnClrB) )
  21.      fn fnKeyDef = #( #( 0, 0, 0, 0, 0 ) )
  22.     fn fnName        = "Lighting"
  23.     fn fnRollOut    = LightingRollOut
  24.     fn fnInitRollOut = (
  25.         local _name        = fnName()
  26.         local _RollOut    = fnRollOut()
  27.         fnAppendRollOut _RollOut _name
  28.     )
  29.  
  30.      ---------------------------------------------------------------
  31.     -- fnApply()
  32.     ---------------------------------------------------------------
  33.     fn fnApply obj keyIDX read write del acq acqObj def sav = (
  34.         local keyNames    = fnKeyNames()
  35.         local keyUI        = fnKeyUI()
  36.         local keyDef    = if def then #( ( fnGetDefs keyNames[keyIDX] ) ) else fnKeyDef()
  37.         local keyArray    = #()
  38.         
  39.         if del do (                                                                                                ---- DELETE
  40.             clrLight.color    = [ 0, 0, 0 ] as color
  41.             fnDeleteProp obj keyNames[keyIDX]
  42.         )
  43.         
  44.         if sav do                                                                                                 ---- SAVE DEFAULT
  45.             try (
  46.                 for n = 1 to 5 do keyDef[keyIDX][n] = keyUI[keyIDX][n].value
  47.                 fnSetDefs ( keyNames[keyIDX] as string ) ( keyDef[keyIDX] as string )
  48.                 return true
  49.             ) catch ( print ( "Error: " + _name + ".fnApply() - save" ); return false )
  50.  
  51.         keyArray = if acq then fnReadProp acqObj keyNames[keyIDX] else fnReadProp obj keyNames[keyIDX]            ---- ACQUIRE
  52.         
  53.         if read or acq or del or def do (                                                                        ---- READ
  54.             for n = 0 to 4 do 
  55.                 if ( keyArray[(_firstValue + n)] == "" ) or ( keyArray[(_firstValue + n)] as string == "undefined" ) or def then
  56.                     try (
  57.                         keyUI[keyIDX][(n+1)].value = keyDef[keyIDX][(n+1)]
  58.                     ) catch ( print ( "Error: " + _name + ".fnApply() - read - default" ); return false )
  59.                 else 
  60.                     try (
  61.                         if n <= 1 do keyUI[keyIDX][(n+1)].value = keyArray[(_firstValue + n)] as float
  62.                         if n >= 2 do keyUI[keyIDX][(n+1)].value = keyArray[(_firstValue + n)] as integer
  63.                     ) catch ( print ( "Error: " + _name + ".fnApply() - read - properties" ); return false )
  64.             if read or del do return true
  65.         )
  66.  
  67.         if write do (                                                                                            ---- WRITE
  68.             try (
  69.                 keyArray[_keyName] = keyNames[keyIDX]
  70.                 del = true
  71.                 for n = 0 to 4 do (
  72.                     keyArray[(_firstValue + n)] = keyUI[keyIDX][n+1].value as string
  73.                     if keyUI[keyIDX][n+1].value > 0 do del = false
  74.                 )
  75.     
  76.                 if del then fnDeleteProp obj keyNames[keyIDX]
  77.                 else fnWriteProp obj keyArray
  78.     
  79.                 return true
  80.             ) catch ( print ( "Error: " + _name + ".fnApply() - write" ); return false )
  81.         )
  82.     )
  83.     
  84.      ---------------------------------------------------------------
  85.     -- fnUpdate()
  86.     ---------------------------------------------------------------
  87.     fn fnUpdate keyIDX:1 read:false write:btnAuto.checked del:false acq:false acqObj:undefined def:false sav:false = (
  88.         if not write do write = btnAuto.checked
  89.         for obj in selection do fnApply obj keyIDX read write del acq acqObj def sav
  90.     )
  91.  
  92.     ---------------------------------------------------------------
  93.     -- Event Handler
  94.     ---------------------------------------------------------------
  95.     on spnAmbMult    changed value    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  96.     on spnDirMult    changed value    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  97.     on spnClrR        changed value    do ( fnColor _RollOut type:false; fnGetPropsToShow(); fnPrintLabel() )
  98.     on spnClrG        changed value    do ( fnColor _RollOut type:false; fnGetPropsToShow(); fnPrintLabel() )
  99.     on spnClrB        changed value    do ( fnColor _RollOut type:false; fnGetPropsToShow(); fnPrintLabel() )
  100.     on clrLight        changed value    do ( fnColor _RollOut val:value; fnGetPropsToShow(); fnPrintLabel() )
  101.     on btnSet        pressed            do ( fnUpdate write:true; fnGetPropsToShow(); fnPrintLabel() )
  102.     on btnDef        pressed            do ( fnUpdate def:true; fnGetPropsToShow(); fnPrintLabel() )
  103.     on btnSav        pressed            do ( fnUpdate sav:true; fnGetPropsToShow(); fnPrintLabel() )
  104.     on btnDel        pressed            do ( fnUpdate del:true; fnGetPropsToShow(); fnPrintLabel() )
  105.     on btnAcq        changed state    do ( fnAcquire _RollOut; fnGetPropsToShow(); fnPrintLabel() )
  106.     on LightingRollOut    open        do (
  107.         _RollOut    = fnRollOut()
  108.         _name        = fnName()
  109.         fnColor _RollOut type:false
  110.         fnOpenRollOut _RollOut
  111.     )
  112.     on LightingRollOut    close        do fnCloseRollOut _RollOut
  113. )
  114.